package com.maiji.cloud.service;

import com.baomidou.mybatisplus.service.IService;
import com.maiji.cloud.entities.login.DietLog;
import com.maiji.cloud.request.BaseDataReqDto;
import com.maiji.cloud.request.ReqMetaData;
import com.maiji.cloud.request.login.*;
import com.maiji.cloud.response.BaseDataResDto;
import com.maiji.cloud.response.BaseResDto;
import com.maiji.cloud.response.login.*;

import java.util.List;


/**
 * 饮食相关
 * Description:  
 * @author zhanglr  
 * @date 2019年6月14日
 */
public interface DietService extends IService<DietLog>{

	/**
	 * 记录饮食记录
	 * @param addDietLogResDto
	 * @return
	 */
	public BaseResDto addDietLog(AddDietLogResDto addDietLogResDto)throws Exception;

	/**
	 * 根据名称搜索
	 * @return
	 */
	public FoodTypeLableResDto searchFoodMaterial(String typeId, String laybleId, String name);

	/**
	 * 获取饮食记录
	 * @param getDietLogReqDto
	 * @return
	 */
	public DietLogResDto getDietLog(GetDietLogReqDto getDietLogReqDto) throws Exception;

	/**
	 * 获得标签集合
	 * @return
	 */
	public FoodTypeLableResDto getFoodmaterialTypeLable();

	/**
	 * 获得用户收藏菜谱列表
	 * @param token
	 * @param reqMetaData
	 * @return
	 */
	public BaseDataResDto<List<FoodMaterialResData>> foodMaterialCollectionList(String token, ReqMetaData reqMetaData);

	/**
	   * 用户收藏
	 * @param token
	 * @param param
	 * @return
	 */
	public BaseResDto thumbsfoodMaterial(String token, ThumbsfoodMaterialReqDto param);
	/**
	 * 根据食材名字搜索
	 * @param param
	 * @return
	 */
	public FoodTypeLableResDto searchFoodMaterialByName(BaseDataReqDto<String> param);
	/**
	 * 获取某一段时间的饮食记录
	 * 
	 * @param getDietLogReqDto
	 * @return
	 * @throws Exception
	 */
	public BaseDataResDto<List<DietLogDaysListResData>> getDietLogDaysList(GetDietLogReqDto getDietLogReqDto) throws Exception;
	/**
	 * 批量删除用户收藏食材（空参为清空收藏）
	 * @param foodMaterialCollectionids
	 * @param token
	 * @return
	 */
	public BaseResDto cancelCollectionFoodMaterial(List<String> foodMaterialCollectionids, String token);
	
	 /**
     * 根据饮食记录id删除
     * @param dielogId
     * @return
     */
	public BaseResDto deleteDielogById(List<String> dielogId);
	/**
	 * 
	 * @param addDietLogResDto
	 * @return
	 */
	public BaseResDto newVersionAddDietLog(AddDietLogResDto addDietLogResDto) throws Exception;
	
	public BaseDataResDto<List<DietLogDaysListResData>> newVersionGetDietLogDaysList(GetDietLogReqDto getDietLogReqDto)throws Exception;

}
